1. Field of the Invention
The present application relates generally to testing electronic circuits. More specifically, the present application relates to a computer implemented method, apparatus, and computer usable code for testing multi-core microprocessors.
2. Description of the Related Art
A multi-core microprocessor, referred to hereinafter as a “multiprocessor”, is an integrated circuit (IC) having two or more independent processor cores. A processor core is an independent processor or computational unit capable of executing threads or other processes independently of the other processor core(s). The processor core(s) in a multiprocessor are typically plugged into a single processor socket, and share the same platform interface which connects each core to memory, input/output, and storage resources. This architecture permits enhanced performance, reduced power consumption, and simultaneous execution of multiple independent tasks or threads.
As processors become more complex, there are more opportunities for defects to arise during manufacture that may impair or impede proper operation of the processor. However, a multiprocessor may be considered to be functional even if some portions of the multiprocessor contain defects. For example, the first-generation Cell Broadband Engine™ (BE) processor, which is a multi-core processor chip, is comprised of a single primary 64-bit Power PC® processor core (PPC) and eight synergistic processor cores (SPCs). Cell Broadband Engine™ processor is a heterogeneous multiprocessor. A heterogeneous multiprocessor is a multiprocessor in which each processor core is capable of executing a different set of instructions. In other words, all the processor cores in the multiprocessor do not use the same instruction set.
The Power PC® processor core is a general purpose central processing unit which is used to run an operating system and provide services. The synergistic processor cores are independent processors capable of executing processes independently from the other synergistic processor cores. The synergistic processor cores are optimized for computational density. Thus, the Power PC® processor core is a primary processor while synergistic processor cores are considered sub-processors.
A high-speed memory controller and high-bandwidth bus interface are also integrated on-chip to permit moving data between components of the processor. This modular chip is designed to operate without requiring all eight of the synergistic processor cores to function correctly.
A multiprocessor chip in which one or more functional units or other portions of the multiprocessor are defective and one or more functional units remain functional is referred to herein as a “partial good” chip. As used herein, a functional unit is a part or component of a multiprocessor that operates or performs one or more functions within the multiprocessor. For example, a processing unit is a functional unit of a multiprocessor. A processing unit is a core on a multiprocessor chip that performs processing functions. Examples of a processing unit include a primary processor such as Power PC® processor core or a sub-processor such as a synergistic processor core. If a defect is detected in a single functional unit, such as a synergistic processor core, the defective synergistic processor core can be disabled and the multiprocessor can still be used with the remaining functional unit(s) as a partial good multiprocessor chip.
Conventional testing techniques utilized during manufacture of processors typically only produce a value or result that indicates a fail or error in the multiprocessor as a whole. The testing values do not indicate whether the error(s) arose in a single functional unit of the multiprocessor, multiple functional unit(s), or identify which functional units caused the error(s). Therefore, conventional testing techniques result in many salvageable partial good chips being incorrectly identified as wholly defective and unnecessarily discarded.